/* * Sun Public License Notice * * The contents of this file are subject to the Sun Public License * Version 1.0 (the "License"). You may not use this file except in * compliance with the License. A copy of the License is available at * http://www.sun.com/ * * The Original Code is NetBeans. The Initial Developer of the Original * Code is Sun Microsystems, Inc. Portions Copyright 1997-2001 Sun * Microsystems, Inc. All Rights Reserved. */ package org.netbeans.modules.db.explorer.actions; import java.util.ResourceBundle; import org.openide.*; import org.openide.util.NbBundle; import java.util.*; import java.io.*; import java.sql.Connection; import org.openide.nodes.*; import org.netbeans.modules.db.explorer.nodes.*; import org.netbeans.modules.db.explorer.infos.*; import javax.swing.JFileChooser; import org.netbeans.lib.ddl.impl.*; public class GrabTableAction extends DatabaseAction { static final long serialVersionUID =-7685449970256732671L; public void performAction (Node[] activatedNodes) { Node node; if (activatedNodes != null && activatedNodes.length>0) node = activatedNodes[0]; else return; try { final ResourceBundle bundle = NbBundle.getBundle("org.netbeans.modules.db.resources.Bundle"); DatabaseNodeInfo info = (DatabaseNodeInfo)node.getCookie(DatabaseNodeInfo.class); DatabaseNodeInfo nfo = info.getParent(nodename); Specification spec = (Specification)nfo.getSpecification(); String tablename = (String)nfo.get(DatabaseNode.TABLE); // Get command CreateTable cmd = (CreateTable)spec.createCommandCreateTable(tablename); Enumeration enu = nfo.getChildren().elements(); while (enu.hasMoreElements()) { Object element = enu.nextElement(); if (element instanceof ColumnNodeInfo) { cmd.getColumns().add(((ColumnNodeInfo)element).getColumnSpecification()); } } // System.out.println(cmd.getCommand()); // Get filename JFileChooser chooser = new JFileChooser(); chooser.setDialogType(JFileChooser.SAVE_DIALOG); chooser.setDialogTitle(bundle.getString("GrabTableFileSaveDialogTitle")); chooser.setSelectedFile(new File(tablename+".grab")); chooser.setFileFilter(new javax.swing.filechooser.FileFilter() { public boolean accept(File f) { return (f.isDirectory() || f.getName().endsWith(".grab")); } public String getDescription() { return bundle.getString("GrabTableFileTypeDescription"); } }); java.awt.Component par = TopManager.getDefault().getWindowManager().getMainWindow(); if (chooser.showSaveDialog(par) == JFileChooser.APPROVE_OPTION) { File file = chooser.getSelectedFile(); if (file != null) { FileOutputStream fstream = new FileOutputStream(file); ObjectOutputStream ostream = new ObjectOutputStream(fstream); cmd.setSpecification(null); ostream.writeObject(cmd); ostream.flush(); ostream.close(); } } } catch(Exception e) { TopManager.getDefault().notify(new NotifyDescriptor.Message("Unable to grab table, "+e.getMessage(), NotifyDescriptor.ERROR_MESSAGE)); } } } /* * <<Log>> * 13 Gandalf 1.12 11/27/99 Patrik Knakal * 12 Gandalf 1.11 10/23/99 Ian Formanek NO SEMANTIC CHANGE - Sun * Microsystems Copyright in File Comment * 11 Gandalf 1.10 10/12/99 Radko Najman debug messages removed * 10 Gandalf 1.9 9/17/99 Slavek Psenicka * 9 Gandalf 1.8 9/8/99 Slavek Psenicka adaptor changes * 8 Gandalf 1.7 8/18/99 Slavek Psenicka debug logs removed * 7 Gandalf 1.6 7/21/99 Slavek Psenicka log * 6 Gandalf 1.5 6/22/99 Ian Formanek employed DEFAULT_HELP * 5 Gandalf 1.4 6/9/99 Ian Formanek ---- Package Change To * org.openide ---- * 4 Gandalf 1.3 5/21/99 Slavek Psenicka new version * 3 Gandalf 1.2 5/14/99 Slavek Psenicka new version * 2 Gandalf 1.1 4/23/99 Slavek Psenicka oprava activatedNode[0] * check * 1 Gandalf 1.0 4/23/99 Slavek Psenicka * $ */